package com.reflect.study;

import com.reflect.study.entity.User;

import java.lang.reflect.Method;

public class Test4 {
    public static void main(String[] args) throws Exception {
        Class<?> user = Class.forName("com.reflect.study.entity.User");

        // 获取父类和子类的所有public方法
        Method[] methods = user.getMethods();
        for (Method method : methods) {
            System.out.println(method);
        }

        // 获取指定的toString方法
        Object user1 = (User) user.newInstance();
        Method method = user.getMethod("toString");
        Object invoke = method.invoke(user1);
        System.out.println(invoke);

        // 获取指定的private方法
        Method method1 = user.getDeclaredMethod("test");
        method1.setAccessible(true);
        Object invoke2 = method1.invoke(user1);
        System.out.println(invoke2);

        // 后续获取构造器的方法都是类似的
    }
}
